home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2000 March / maximum-cd-2000-03.iso / Quake3 Game Source / Q3AGameSource.exe / Main / ui_display.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-18  |  8.5 KB  |  246 lines

  1. // Copyright (C) 1999-2000 Id Software, Inc.
  2. //
  3. /*
  4. =======================================================================
  5.  
  6. DISPLAY OPTIONS MENU
  7.  
  8. =======================================================================
  9. */
  10.  
  11. #include "ui_local.h"
  12.  
  13.  
  14. #define ART_FRAMEL            "menu/art/frame2_l"
  15. #define ART_FRAMER            "menu/art/frame1_r"
  16. #define ART_BACK0            "menu/art/back_0"
  17. #define ART_BACK1            "menu/art/back_1"
  18.  
  19. #define ID_GRAPHICS            10
  20. #define ID_DISPLAY            11
  21. #define ID_SOUND            12
  22. #define ID_NETWORK            13
  23. #define ID_BRIGHTNESS        14
  24. #define ID_SCREENSIZE        15
  25. #define ID_BACK                16
  26.  
  27.  
  28. typedef struct {
  29.     menuframework_s    menu;
  30.  
  31.     menutext_s        banner;
  32.     menubitmap_s    framel;
  33.     menubitmap_s    framer;
  34.  
  35.     menutext_s        graphics;
  36.     menutext_s        display;
  37.     menutext_s        sound;
  38.     menutext_s        network;
  39.  
  40.     menuslider_s    brightness;
  41.     menuslider_s    screensize;
  42.  
  43.     menubitmap_s    back;
  44. } displayOptionsInfo_t;
  45.  
  46. static displayOptionsInfo_t    displayOptionsInfo;
  47.  
  48.  
  49. /*
  50. =================
  51. UI_DisplayOptionsMenu_Event
  52. =================
  53. */
  54. static void UI_DisplayOptionsMenu_Event( void* ptr, int event ) {
  55.     if( event != QM_ACTIVATED ) {
  56.         return;
  57.     }
  58.  
  59.     switch( ((menucommon_s*)ptr)->id ) {
  60.     case ID_GRAPHICS:
  61.         UI_PopMenu();
  62.         UI_GraphicsOptionsMenu();
  63.         break;
  64.  
  65.     case ID_DISPLAY:
  66.         break;
  67.  
  68.     case ID_SOUND:
  69.         UI_PopMenu();
  70.         UI_SoundOptionsMenu();
  71.         break;
  72.  
  73.     case ID_NETWORK:
  74.         UI_PopMenu();
  75.         UI_NetworkOptionsMenu();
  76.         break;
  77.  
  78.     case ID_BRIGHTNESS:
  79.         trap_Cvar_SetValue( "r_gamma", displayOptionsInfo.brightness.curvalue / 10.0f );
  80.         break;
  81.     
  82.     case ID_SCREENSIZE:
  83.         trap_Cvar_SetValue( "cg_viewsize", displayOptionsInfo.screensize.curvalue * 10 );
  84.         break;
  85.  
  86.     case ID_BACK:
  87.         UI_PopMenu();
  88.         break;
  89.     }
  90. }
  91.  
  92.  
  93. /*
  94. ===============
  95. UI_DisplayOptionsMenu_Init
  96. ===============
  97. */
  98. static void UI_DisplayOptionsMenu_Init( void ) {
  99.     int        y;
  100.  
  101.     memset( &displayOptionsInfo, 0, sizeof(displayOptionsInfo) );
  102.  
  103.     UI_DisplayOptionsMenu_Cache();
  104.     displayOptionsInfo.menu.wrapAround = qtrue;
  105.     displayOptionsInfo.menu.fullscreen = qtrue;
  106.  
  107.     displayOptionsInfo.banner.generic.type        = MTYPE_BTEXT;
  108.     displayOptionsInfo.banner.generic.flags        = QMF_CENTER_JUSTIFY;
  109.     displayOptionsInfo.banner.generic.x            = 320;
  110.     displayOptionsInfo.banner.generic.y            = 16;
  111.     displayOptionsInfo.banner.string            = "SYSTEM SETUP";
  112.     displayOptionsInfo.banner.color                = color_white;
  113.     displayOptionsInfo.banner.style                = UI_CENTER;
  114.  
  115.     displayOptionsInfo.framel.generic.type        = MTYPE_BITMAP;
  116.     displayOptionsInfo.framel.generic.name        = ART_FRAMEL;
  117.     displayOptionsInfo.framel.generic.flags        = QMF_INACTIVE;
  118.     displayOptionsInfo.framel.generic.x            = 0;  
  119.     displayOptionsInfo.framel.generic.y            = 78;
  120.     displayOptionsInfo.framel.width                = 256;
  121.     displayOptionsInfo.framel.height            = 329;
  122.  
  123.     displayOptionsInfo.framer.generic.type        = MTYPE_BITMAP;
  124.     displayOptionsInfo.framer.generic.name        = ART_FRAMER;
  125.     displayOptionsInfo.framer.generic.flags        = QMF_INACTIVE;
  126.     displayOptionsInfo.framer.generic.x            = 376;
  127.     displayOptionsInfo.framer.generic.y            = 76;
  128.     displayOptionsInfo.framer.width                = 256;
  129.     displayOptionsInfo.framer.height            = 334;
  130.  
  131.     displayOptionsInfo.graphics.generic.type        = MTYPE_PTEXT;
  132.     displayOptionsInfo.graphics.generic.flags        = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS;
  133.     displayOptionsInfo.graphics.generic.id            = ID_GRAPHICS;
  134.     displayOptionsInfo.graphics.generic.callback    = UI_DisplayOptionsMenu_Event;
  135.     displayOptionsInfo.graphics.generic.x            = 216;
  136.     displayOptionsInfo.graphics.generic.y            = 240 - 2 * PROP_HEIGHT;
  137.     displayOptionsInfo.graphics.string                = "GRAPHICS";
  138.     displayOptionsInfo.graphics.style                = UI_RIGHT;
  139.     displayOptionsInfo.graphics.color                = color_red;
  140.  
  141.     displayOptionsInfo.display.generic.type            = MTYPE_PTEXT;
  142.     displayOptionsInfo.display.generic.flags        = QMF_RIGHT_JUSTIFY;
  143.     displayOptionsInfo.display.generic.id            = ID_DISPLAY;
  144.     displayOptionsInfo.display.generic.callback        = UI_DisplayOptionsMenu_Event;
  145.     displayOptionsInfo.display.generic.x            = 216;
  146.     displayOptionsInfo.display.generic.y            = 240 - PROP_HEIGHT;
  147.     displayOptionsInfo.display.string                = "DISPLAY";
  148.     displayOptionsInfo.display.style                = UI_RIGHT;
  149.     displayOptionsInfo.display.color                = color_red;
  150.  
  151.     displayOptionsInfo.sound.generic.type            = MTYPE_PTEXT;
  152.     displayOptionsInfo.sound.generic.flags            = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS;
  153.     displayOptionsInfo.sound.generic.id                = ID_SOUND;
  154.     displayOptionsInfo.sound.generic.callback        = UI_DisplayOptionsMenu_Event;
  155.     displayOptionsInfo.sound.generic.x                = 216;
  156.     displayOptionsInfo.sound.generic.y                = 240;
  157.     displayOptionsInfo.sound.string                    = "SOUND";
  158.     displayOptionsInfo.sound.style                    = UI_RIGHT;
  159.     displayOptionsInfo.sound.color                    = color_red;
  160.  
  161.     displayOptionsInfo.network.generic.type            = MTYPE_PTEXT;
  162.     displayOptionsInfo.network.generic.flags        = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS;
  163.     displayOptionsInfo.network.generic.id            = ID_NETWORK;
  164.     displayOptionsInfo.network.generic.callback        = UI_DisplayOptionsMenu_Event;
  165.     displayOptionsInfo.network.generic.x            = 216;
  166.     displayOptionsInfo.network.generic.y            = 240 + PROP_HEIGHT;
  167.     displayOptionsInfo.network.string                = "NETWORK";
  168.     displayOptionsInfo.network.style                = UI_RIGHT;
  169.     displayOptionsInfo.network.color                = color_red;
  170.  
  171.     y = 240 - 1 * (BIGCHAR_HEIGHT+2);
  172.     displayOptionsInfo.brightness.generic.type        = MTYPE_SLIDER;
  173.     displayOptionsInfo.brightness.generic.name        = "Brightness:";
  174.     displayOptionsInfo.brightness.generic.flags        = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
  175.     displayOptionsInfo.brightness.generic.callback    = UI_DisplayOptionsMenu_Event;
  176.     displayOptionsInfo.brightness.generic.id        = ID_BRIGHTNESS;
  177.     displayOptionsInfo.brightness.generic.x            = 400;
  178.     displayOptionsInfo.brightness.generic.y            = y;
  179.     displayOptionsInfo.brightness.minvalue            = 5;
  180.     displayOptionsInfo.brightness.maxvalue            = 20;
  181.     if( !uis.glconfig.deviceSupportsGamma ) {
  182.         displayOptionsInfo.brightness.generic.flags |= QMF_GRAYED;
  183.     }
  184.  
  185.     y += BIGCHAR_HEIGHT+2;
  186.     displayOptionsInfo.screensize.generic.type        = MTYPE_SLIDER;
  187.     displayOptionsInfo.screensize.generic.name        = "Screen Size:";
  188.     displayOptionsInfo.screensize.generic.flags        = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
  189.     displayOptionsInfo.screensize.generic.callback    = UI_DisplayOptionsMenu_Event;
  190.     displayOptionsInfo.screensize.generic.id        = ID_SCREENSIZE;
  191.     displayOptionsInfo.screensize.generic.x            = 400;
  192.     displayOptionsInfo.screensize.generic.y            = y;
  193.     displayOptionsInfo.screensize.minvalue            = 3;
  194.     displayOptionsInfo.screensize.maxvalue            = 10;
  195.  
  196.     displayOptionsInfo.back.generic.type        = MTYPE_BITMAP;
  197.     displayOptionsInfo.back.generic.name        = ART_BACK0;
  198.     displayOptionsInfo.back.generic.flags        = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
  199.     displayOptionsInfo.back.generic.callback    = UI_DisplayOptionsMenu_Event;
  200.     displayOptionsInfo.back.generic.id            = ID_BACK;
  201.     displayOptionsInfo.back.generic.x            = 0;
  202.     displayOptionsInfo.back.generic.y            = 480-64;
  203.     displayOptionsInfo.back.width                = 128;
  204.     displayOptionsInfo.back.height                = 64;
  205.     displayOptionsInfo.back.focuspic            = ART_BACK1;
  206.  
  207.     Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.banner );
  208.     Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.framel );
  209.     Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.framer );
  210.     Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.graphics );
  211.     Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.display );
  212.     Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.sound );
  213.     Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.network );
  214.     Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.brightness );
  215.     Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.screensize );
  216.     Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.back );
  217.  
  218.     displayOptionsInfo.brightness.curvalue  = trap_Cvar_VariableValue("r_gamma") * 10;
  219.     displayOptionsInfo.screensize.curvalue  = trap_Cvar_VariableValue( "cg_viewsize")/10;
  220. }
  221.  
  222.  
  223. /*
  224. ===============
  225. UI_DisplayOptionsMenu_Cache
  226. ===============
  227. */
  228. void UI_DisplayOptionsMenu_Cache( void ) {
  229.     trap_R_RegisterShaderNoMip( ART_FRAMEL );
  230.     trap_R_RegisterShaderNoMip( ART_FRAMER );
  231.     trap_R_RegisterShaderNoMip( ART_BACK0 );
  232.     trap_R_RegisterShaderNoMip( ART_BACK1 );
  233. }
  234.  
  235.  
  236. /*
  237. ===============
  238. UI_DisplayOptionsMenu
  239. ===============
  240. */
  241. void UI_DisplayOptionsMenu( void ) {
  242.     UI_DisplayOptionsMenu_Init();
  243.     UI_PushMenu( &displayOptionsInfo.menu );
  244.     Menu_SetCursorToItem( &displayOptionsInfo.menu, &displayOptionsInfo.display );
  245. }
  246.